home *** CD-ROM | disk | FTP | other *** search
- // SIntroScene.cpp: Implementierung der Klasse SIntroScene.
- //
- //////////////////////////////////////////////////////////////////////
-
- #include "stdafx.h"
- #include "SIntroScene.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
-
- #define INIT_INIT int abcdef=0;
- #define INIT(a) for (abcdef=0;abcdef < sizeof(a)/sizeof(float);abcdef++){a[abcdef]=0.0f;}
-
- #define MAX_TIME 2500
-
- //////////////////////////////////////////////////////////////////////
- // Konstruktion/Destruktion
- //////////////////////////////////////////////////////////////////////
-
- SIntroScene::SIntroScene()
- {
- switchState(TEXT_THE);
- done = false;
- }
-
- SIntroScene::~SIntroScene()
- {
-
- }
-
- void SIntroScene::create(HDC hDC)
- {
- font.createFont(hDC,"Arial",36,0.0f,SFontAttri(800,false,false));
- timer.create();
-
- snowMan.create();
- snowMan.setPosition(0.0f,-5.0f,-12.0f);
- }
-
- void SIntroScene::update(float frametime)
- {
- static float lastTime;
-
- //Zeit abgelaufen seit letztem Schuss
- //Wird aktualisiert...
- totalTime += timer.getTime() - lastTime;
- lastTime = timer.getTime();
-
- if (totalTime >= MAX_TIME)
- {
- switchState((int)(state)+1);
- }
-
- //*******************************************
-
- snowMan.update(frametime);
-
- //******************************************
-
- CString text;
-
- switch (state)
- {
- case TEXT_THE:
- text = "The";
- break;
- case TEXT_MERRY:
- text = "Merry";
- break;
- case TEXT_CHRISTMAS:
- text = "Christmas";
- break;
- case TEXT_SOLITAIRE:
- text = "Solitaire";
- break;
- case TEXT_BROUGHT2U:
- text = "Brought to you";
- break;
- case TEXT_BY:
- text = "BY";
- break;
- case TEXT_SNOWMAN:
- text = " Snowman ";
- break;
- default:
- return;
- }
-
- size[0] += frametime*sizeSpeed[0];
- size[1] += frametime*sizeSpeed[1];
-
- position[0] += frametime*movSpeed[0];
- position[1] += frametime*movSpeed[1];
-
- alpha -= frametime*alphaSpeed;
-
- glPushMatrix();
-
- glTranslatef(position[0],position[1],-8.0f);
- glScalef(size[0],size[1],1.0f);
-
- glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glDisable(GL_DEPTH_TEST);
-
- glColor4f(1.0f,1.0f,1.0f,alpha);
-
- font.drawText(CENTER,text);
-
- glEnable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
- glEnable(GL_DEPTH_TEST);
-
- glBlendFunc(GL_ONE,GL_ONE);
-
- glPopMatrix();
-
- glPushMatrix();
-
- //glRotatef(45.0f,0.0f,1.0f,0.0f);
-
-
-
- glPopMatrix();
-
- }
-
- bool SIntroScene::isDone()
- {
- return done;
- }
-
- void SIntroScene::switchState(int introState)
- {
- state = introState;
-
- alphaSpeed = 0.0f;
- alpha = 1.0f;
- INIT_INIT
- INIT(movSpeed)
- INIT(position)
- size[0] = 1.0f;
- size[1] = 1.0f;
- INIT(sizeSpeed)
- totalTime = 0.0f;
-
-
- switch (state)
- {
- case TEXT_THE:
- sizeSpeed[0] = 0.003f;
- sizeSpeed[1] = 0.003f;
- alphaSpeed = 0.0005f;
- break;
- case TEXT_MERRY:
- movSpeed[0] = 0.009f;
- position[0] = -6.0f;
- break;
- case TEXT_CHRISTMAS:
- movSpeed[0] = -0.007f;
- position[0] = 7.5f;
- size[0] = 1.5f;
- size[1] = 1.5f;
- break;
- case TEXT_SOLITAIRE:
- size[0] = 5.0f;
- size[1] = 5.0f;
- sizeSpeed[0] = -0.002f;
- sizeSpeed[1] = -0.002f;
- break;
- case TEXT_BROUGHT2U:
- size[0] = 0.5f;
- size[1] = 0.5f;
- alphaSpeed = 0.0005f;
- break;
- case TEXT_BY:
- alpha = 0.0f;
- alphaSpeed = -0.0007f;
- movSpeed[1] = -0.005f;
- position[1] = 3.5f;
- break;
- case TEXT_SNOWMAN:
- alpha = 0.0f;
- alphaSpeed = -0.0007f;
- size[0] = 0.5f;
- size[1] = 0.5f;
- sizeSpeed[0] = 0.002f;
- sizeSpeed[1] = 0.002f;
- break;
- default:
- done = true;
- break;
- }
-
- }
-